package simple;

/**
 * ArrayPassBy..
 *
 * @author Lizhong
 * @date 2019/9/4
 */
public class ArrayPassBy {
    public static void main(String[] args) {
        int[] i = new int[5];
        method01(i);
        System.out.println(i[1]);
        int c = '9';
        System.out.println(c);
        ArrayPassBy arrayPassBy = new ArrayPassBy();
        char[][] x =
                {
                        {'.', '.', '4', '.', '.', '.', '6', '3', '.'},
                        {'.', '.', '.', '.', '.', '.', '.', '.', '.'},
                        {'5', '.', '.', '.', '.', '.', '.', '9', '.'},
                        {'.', '.', '.', '5', '6', '.', '.', '.', '.'},
                        {'4', '.', '3', '.', '.', '.', '.', '.', '1'},
                        {'.', '.', '.', '7', '.', '.', '.', '.', '.'},
                        {'.', '.', '.', '5', '.', '.', '.', '.', '.'},
                        {'.', '.', '.', '.', '.', '.', '.', '.', '.'},
                        {'.', '.', '.', '.', '.', '.', '.', '.', '.'}
                };
        char[][] y = {
                {'5', '3', '.', '.', '7', '.', '.', '.', '.'},
                {'6', '.', '.', '1', '9', '5', '.', '.', '.'},
                {'.', '9', '8', '.', '.', '.', '.', '6', '.'},
                {'8', '.', '.', '.', '6', '.', '.', '.', '3'},
                {'4', '.', '.', '8', '.', '3', '.', '.', '1'},
                {'7', '.', '.', '.', '2', '.', '.', '.', '6'},
                {'.', '6', '.', '.', '.', '.', '2', '8', '.'},
                {'.', '.', '.', '4', '1', '9', '.', '.', '5'},
                {'.', '.', '.', '.', '8', '.', '.', '7', '9'}
        };
        boolean validSudoku = arrayPassBy.isValidSudoku(x);
        System.out.println(validSudoku);
    }

    public static void method01(int[] i) {
        i[1] = 10;
    }

    public boolean isValidSudoku(char[][] board) {
        // 0 ,3 , 6
        // 0 , 3, 6
        for (int i = 0; i < 9; i++) {

            int[] x = new int[9];
            int[] y = new int[9];

            int[] q = null;
            int[] w = null;
            int[] e = null;

            if (i % 3 == 0) {
                q = new int[9];
                w = new int[9];
                e = new int[9];
            }
            for (int j = 0; j < 9; j++) {

                if (!tt(board[i][j], x)) return false;
                if (!tt(board[j][i], y)) return false;
                // 判断方格
                if (i % 3 == 0 && j < 3) {
                    if (!tt(board[j][i], q)) return false;
                } else if (i % 3 == 0 && 3 <= j && j < 6) {
                    if (!tt(board[j][i], w)) return false;

                } else if ((i % 3 == 0 && j >= 6)) {
                    if (!tt(board[j][i], e)) return false;
                }
                /*if (i % 3 == 0 && j % 3 == 0) {
                    int k = 0;
                    int[] temp = new int[9];
                    for (int m = 0; m < 3; m++) {
                        for (int n = 0; n < 3; n++) {
                            if (!tt(board[i + m][j + n], temp)) return false;
                        }
                    }
                }*/
            }

        }
        return true;

    }

    boolean tt(char c, int[] temp) {
        // 49-57
        if (c != '.') {
            int k = c;
            if (temp[k - 49] != 0)
                return false;
            else
                temp[k - 49] = 1;
        }
        return true;
    }
}
